﻿'''
题目描述
某云短信厂商，为庆祝国庆，推出充值优惠活动。
现在给出客户预算，和优惠售价序列，求最多可获得的短信总条数。
输入描述
第一行客户预算M，其中 0 ≤ M ≤ 10^6
第二行给出售价表， P1, P2, … Pn , 其中 1 ≤ n ≤ 100 ,
Pi为充值 i 元获得的短信条数。1 ≤ Pi ≤ 1000 , 1 ≤ n ≤ 100
输出描述
最多获得的短信条数
示例1
输入
6
10 20 30 40 60
输出
70
说明
分两次充值最优， 1 元、 5 元各充一次。总条数 10 + 60 = 70
示例2
输入
15
10 20 30 40 60 60 70 80 90 150  
输出
210
说明
分两次充值最优， 10 元 5 元各充一次，总条数 150 + 60 = 210
解题思路
本题是完全背包问题。
客户预算M相当于背包的承重，
出售价表：
i 元相当于物品的重量，
Pi 短信条数相当于物品的价值
'''
#读取输入
money = int(input())
nums = list(map(int,input().split()))
#定义dp数组，存储当前预算的最大条数
dp = [0] * (money + 1)
#遍历售价表，更新dp数组
for i in range(len(nums)):
    for j in range(i + 1, money + 1):   #i从0开始，j需加1，即最少从1元开始
        #取购买当前优惠和不购买的最大条数,i从0开始则钱数需加1
        dp[j] = max(dp[j],dp[j - (i + 1)] + nums[i])
#输出最大条数
print(dp[money])

